package pers.dawnyang.modular.system.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import pers.dawnyang.common.domain.entity.SysUser;
import pers.dawnyang.common.domain.entity.SysUserDept;
import pers.dawnyang.modular.system.domain.request.user.UserDeptReqU;
import pers.dawnyang.modular.system.domain.request.user.UserReqR;
import pers.dawnyang.modular.system.domain.request.user.UserRoleReqU;
import pers.dawnyang.modular.system.domain.response.user.UserDeptRes;
import pers.dawnyang.modular.system.domain.response.user.UserExcelRes;
import pers.dawnyang.modular.system.domain.response.user.UserRes;
import pers.dawnyang.modular.system.domain.response.user.UserRoleRes;

public interface UserService extends IService<SysUser> {

    Page<UserRes> getPage(Page<UserRes> page, UserReqR req);

    List<SysUserDept> getUserDeptList(Long userId);

    void saveUserRole(UserRoleReqU req);

    List<UserDeptRes> getUserDept(Long id);

    void saveUserDept(UserDeptReqU req);

    List<UserRoleRes> getUserRole(Long userId);

    UserRes getUserDetail(Long userId);

    void resetPwd(Long userId);

    List<UserExcelRes> export(UserReqR req);

    Long getUserMinRoleLevel(Long userId);

    /**
     * 检查用户，角色权限越级操作
     * 
     * @param userId
     * @return
     */
    boolean checkRoleLevel(Long userId);

    Long getMinRoleLevelByRoleIds(String roleIds);

}
